﻿using System;
using EntitiesAndMappings.Entities;
using System.Windows.Forms;
using ProyectoActivos.Validate;
using ProyectoActivos.Daos;
using System.Drawing;
using ProyectoActivos.Util;

namespace ProyectoActivos.Forms.Mantenimiento
{
    public partial class FrmMantenimientoTipoMovimiento : Form, IValidateForm
    {
        public static FrmMantenimientoTipoMovimiento Activo { set; get; }
        private Boolean _valido;
        private TipoMovimientoDAO tipoMovimientoDAO;

        


        public FrmMantenimientoTipoMovimiento()
        {
            InitializeComponent();
            if (Activo == null)
            {
                Activo = this;
            }
            _valido = true;
            tipoMovimientoDAO = new TipoMovimientoDAO();
            Closed += EnCierre;
            dGridResultado.AutoGenerateColumns = false;
        }

        private void EnCierre(object sender, EventArgs e)
        {
            Activo = null;
        }

        private void FrmMantenimientoTipoMovimiento_Load(object sender, EventArgs e)
        {
            cmbTipoEntradaOSalida.Items.Add(new ItemGenericoComboBox() { Id = 0, Descripcion = "Cualquiera" });
            cmbTipoEntradaOSalida.Items.Add(new ItemGenericoComboBox() { Id = TipoMovimiento.TIPO_MOVIMIENTO_ENTRADA, Descripcion = TipoMovimiento.TIPO_MOVIMIENTO_ENTRADA_CADENA });
            cmbTipoEntradaOSalida.Items.Add(new ItemGenericoComboBox() { Id = TipoMovimiento.TIPO_MOVIMIENTO_SALIDA, Descripcion = TipoMovimiento.TIPO_MOVIMIENTO_SALIDA_CADENA });
           cmbTipoEntradaOSalida.SelectedIndex = 0;
        }

       
        public void Invalid()
        {
            _valido = false;
        }

        public Boolean IsValid()
        {
            return _valido;
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            _valido = true;          

            TipoMovimiento parametros = new TipoMovimiento();


            if (cmbTipoEntradaOSalida.SelectedItem != null)
            {
                parametros.TipoEntradaOSalida = ((ItemGenericoComboBox)cmbTipoEntradaOSalida.SelectedItem).Id;
            }
            
            ActionExecutor.Execute(this, delegate
            {
                dGridResultado.DataSource = tipoMovimientoDAO.Buscar(parametros);
            });

            tStripButtonDesactivar.Visible = false;
            tStripButtonReactivar.Visible = false;


            dGridResultado.ClearSelection();
        }

        private void tStripButtonCrear_Click(object sender, EventArgs e)
        {
            var form = new FrmActualizarTipoMovimiento(new TipoMovimiento());
            form.ShowDialog(this);
            if (!form.CerroSinAccion)
            {
                btnBuscar_Click(sender, e);
            }
        }

        private void tStripButtonDesactivar_Click(object sender, EventArgs e)
        {
            if (dGridResultado.CurrentRow == null)
            {
                return;
            }

            var tipoMovimiento = (TipoMovimiento)dGridResultado.CurrentRow.DataBoundItem;
            tipoMovimiento.Estado = ProyectoActivos.Const.Estado.Inactivo;
            tipoMovimientoDAO.Update(tipoMovimiento);
            btnBuscar_Click(sender, e);
        }

        private void tStripButtonReactivar_Click(object sender, EventArgs e)
        {
            if (dGridResultado.CurrentRow == null)
            {
                return;
            }

            var tipoMovimiento = (TipoMovimiento)dGridResultado.CurrentRow.DataBoundItem;
            tipoMovimiento.Estado = ProyectoActivos.Const.Estado.Activo;
            tipoMovimientoDAO.Update(tipoMovimiento);
            btnBuscar_Click(sender, e);
        }

        private void dGridResultado_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (dGridResultado.Rows[e.RowIndex].Cells["Estado"].Value.ToString().CompareTo("I") == 0)
            {
                e.CellStyle.Font = new Font(dGridResultado.Font, FontStyle.Bold);
                e.CellStyle.BackColor = Color.Turquoise;
            }
        }

        private void dGridResultado_SelectionChanged(object sender, EventArgs e)
        {
            if (dGridResultado.SelectedRows.Count > 0)
            {
                if (dGridResultado.SelectedRows[0].Cells["Estado"].Value.ToString().CompareTo("I") == 0)
                {
                    tStripButtonDesactivar.Visible = false;
                    tStripButtonReactivar.Visible = true;
                }
                else
                {
                    tStripButtonDesactivar.Visible = true;
                    tStripButtonReactivar.Visible = false;

                }
            }
        }

        private void tStripButtonModificar_Click(object sender, EventArgs e)
        {
            if (dGridResultado.SelectedRows.Count > 0)
            {
                
                var tipoMovimiento = (TipoMovimiento)dGridResultado.CurrentRow.DataBoundItem;
                var form = new FrmActualizarTipoMovimiento(tipoMovimientoDAO.Refresh(tipoMovimiento));
                form.ShowDialog(this);
                if (!form.CerroSinAccion)
                {
                    btnBuscar_Click(sender, e);
                }
            }
            else
            {
                MessageBox.Show(@"Debe seleccionar un elemento");
            }
        }

      
    }
}
